package ClasesExtras;

import java.util.ArrayList;

import juanca.mole.R;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.TextView;

public class AdaptadorMaquinas extends ArrayAdapter<ItemPartesMaquina> {

	private Activity contexto;
	private ArrayList<ItemPartesMaquina> partesMaquina;

	public AdaptadorMaquinas(Activity context,
			ArrayList<ItemPartesMaquina> partesMaquina) {

		super(context, R.layout.lv_checkbox, partesMaquina);
		this.contexto = context;
		this.partesMaquina = partesMaquina;

	}

	public View getView(int position, View convertView, ViewGroup parent) {
		View item = convertView;

		// Creamos esta variable para almacen posteriormente en el la vista que
		// ha dibujado
		VistaItem vistaitem;

		// Si se decide que no existe una vista reutilizable para el proximo
		// item entra en la condicion.
		// De este modo tambien ahorramos tener que volver a generar vistas
		if (item == null) {

			// Obtenemos una referencia de Inflater para poder inflar el diseño
			LayoutInflater inflador = contexto.getLayoutInflater();

			// Se le define a la vista (item) el tipo de diseño que tiene que
			// tener
			item = inflador.inflate(R.layout.lv_checkbox, null);

			// Creamos un nuevo vistaitem que se almacenara en el tag de la
			// vista
			vistaitem = new VistaItem();

			// Almacenamos en el objeto la referencia del TextView buscandolo
			// por ID

			vistaitem.partMaq = (TextView) item.findViewById(R.id.partMaquina);
			// tambien almacenamos en el objeto la referencia del CheckBox
			// buscandolo por ID

			vistaitem.chkEstado = (CheckBox) item.findViewById(R.id.chkEstado);

			// Ahora si, guardamos en el tag de la vista el objeto vistaitem
			item.setTag(vistaitem);

		} else {

			// En caso de que la vista sea ya reutilizable se recupera el objeto
			// VistaItem almacenada en su tag
			vistaitem = (VistaItem) item.getTag();
		}

		// Se cargan los datos desde el ArrayList
		vistaitem.partMaq.setText(partesMaquina.get(position).getParte()
				.toString());
		vistaitem.chkEstado
				.setChecked(partesMaquina.get(position).isChekeado());
		// Se devuelve ya la vista nueva o reutilizada que ha sido dibujada
		return (item);
	}

	// Esta clase se usa para almacenar el TextView y el CheckBox de una vista y
	// es donde esta el "truco" para que las vistas se guarden
	public static class VistaItem {
		TextView partMaq;
		CheckBox chkEstado;

	}
}
